import pandas as pd

# 1. 读取 student.xlsx 文件内容，并打印输出
excel_file = pd.ExcelFile('C:\\Users\\admin\\Desktop/student.xlsx')
df = excel_file.parse()

print('文件内容信息：')
df.info()

# 查看数据集行数和列数
rows, columns = df.shape

if rows < 100 and columns < 20:
    # 短表数据（行数少于100且列数少于20）查看全量数据信息
    print('文件全部内容信息：')
    print(df.to_csv(sep='\t', na_rep='nan'))
else:
    # 长表数据查看数据前几行信息
    print('文件前几行内容信息：')
    print(df.head().to_csv(sep='\t', na_rep='nan'))

# 2. 按性别统计学生人数，并打印输出
gender_count = df['性别'].value_counts()
print('\n按性别统计学生人数：')
print(gender_count)

# 3. 按年龄段统计学生人数，并打印输出
# 定义年龄段区间
bins = [0, 12, 18, 25, 60, float('inf')]
labels = ['0-12', '13-17', '18-35', '36-60', '61+']

# 对年龄进行分组
df['年龄段'] = pd.cut(df['年龄'], bins=bins, labels=labels)

# 统计各年龄段的学生人数
age_group_count = df['年龄段'].value_counts()
print('\n按年龄段统计学生人数：')
print(age_group_count)

# 4. 按地区（外省按省份，海南省按市县）统计学生人数，并打印输出
# 假设地区信息在家庭地址列
def extract_area(area):
    if '海南' in area:
        return area.split('省')[-1].split('市')[0]
    else:
        return area.split('省')[0] if '省' in area else area.split('自治区')[0]

df['地区分类'] = df['家庭地址'].apply(extract_area)
area_count = df['地区分类'].value_counts()
print('\n按地区统计学生人数：')
print(area_count)